#include <REGX52.H>
#include "OneWire.h"

#define DS18B20_SKIP_ROM			0xCC
#define DS18B20_CONVERT_T			0x44
#define DS18B20_READ_SCRATCHPAD		0xBE

/*********************************************************************
	方法：温度转换
	参数：
	返回值：无
*/
void DS18B20_ConvertT(void)
{
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_CONVERT_T);
}

/*********************************************************************
	方法：读取温度
	参数：
	返回值：整形int，比实际的温度值大16倍
*/
int DS18B20_ReadTInt(void)
{
	unsigned char TLSB,TMSB;
	int Temp=0;
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_READ_SCRATCHPAD);
	TLSB=OneWire_ReceiveByte();
	TMSB=OneWire_ReceiveByte();
	Temp=(TMSB<<8)|TLSB;
	return Temp;
}

/*********************************************************************
	方法：读取温度
	参数：
	返回值：float，实际温度值
*/
float DS18B20_ReadTFloat(void)
{
	float T;
	int Temp=DS18B20_ReadTInt();
	T=Temp/16.0;
	return T;
}